package com.zb.utils;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间转换工具类
 * @Author WEN
 * @Date 2024/3/20 0020
 **/
public class ZbDateConvertUtil {
    public static final String FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
    public static final String FORMAT_HH_MM = "HH:mm";

    /**
     * 日期转换成字符串格式
     * @param date 时间日期
     * @param format 转换的时间格式
     * @return
     */
    public static String dateToStr(Date date, String format) {
        if (null == date) {
            return "";
        }
        return new SimpleDateFormat(format).format(date);
    }

    /**
     * 日期转换成完整的日期字符串
     * @param date 日期时间
     * @return 返回时间格式：yyyy-MM-dd HH:mm:ss
     */
    public static String dateToDateStr(Date date) {
        return dateToStr(date, FORMAT_DEFAULT);
    }

    /**
     * 日期转换成字符串时分格式
     * @param date 日期
     * @return 返回时间格式：HH:mm
     */
    public static String DateToHourMinuteStr(Date date) {
        return dateToStr(date, FORMAT_HH_MM);
    }

    /**
     * 日期字符串转成日期格式
     * @param dateStr 日期时间字符串
     * @param format 转换格式
     * @return
     */
    public static Date dateStrToDate(String dateStr, String format) {
        if (StringUtils.isBlank(dateStr)) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.parse(dateStr);
        } catch (ParseException e) {

        }
        return null;
    }

    /**
     * 字符串转换成日期
     * @param dateStr 日期时间字符串
     * @return 返回时间格式：yyyy-MM-dd HH:mm
     */
    public static Date dateStrToDate(String dateStr) {
        return dateStrToDate(dateStr, FORMAT_YYYY_MM_DD_HH_MM);
    }

    /**
     * 字符串转换成日期
     * @param dateStr 日期时间字符串
     * @return 返回时间格式：yyyy-MM-dd HH:mm
     */
    public static String dateStrFormatToDateStr(String dateStr) {
        return dateStrFormatToDateStr(dateStr, FORMAT_YYYY_MM_DD_HH_MM);
    }

    /**
     * 字符串转换成日期
     * @param dateStr 日期时间字符串
     * @return 返回时间格式：yyyy-MM-dd HH:mm
     */
    public static String dateStrFormatToDateStr(String dateStr, String format) {
        Date date = dateStrToDate(dateStr);
        if (null == date) {
            return null;
        }
        return dateToStr(date, format);
    }


    /**
     * 字符串转换成日期
     * @param dateStr 日期时间字符串
     * @return 返回时间格式：HH:mm
     */
    public static Date dateStrToHourMinuteDate(String dateStr) {
        return dateStrToDate(dateStr, FORMAT_HH_MM);
    }
}
